home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / var / lib / python-support / python2.6 / invest / applet.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2009-10-12  |  6.7 KB  |  185 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import os
  5. import time
  6. from os.path import *
  7. import gnomeapplet
  8. import gtk
  9. import gtk.gdk as gtk
  10. import gconf
  11. import gobject
  12. gobject.threads_init()
  13. from gettext import gettext as _
  14. import gconf
  15. import invest
  16. import invest.about as invest
  17. import invest.chart as invest
  18. import invest.preferences as invest
  19. import invest.defs as invest
  20. from invest.quotes import QuoteUpdater
  21. from invest.widgets import *
  22. gtk.window_set_default_icon_from_file(join(invest.ART_DATA_DIR, 'invest_neutral.svg'))
  23.  
  24. class InvestApplet:
  25.     
  26.     def __init__(self, applet):
  27.         self.applet = applet
  28.         self.applet.setup_menu_from_file(None, 'Invest_Applet.xml', None, [
  29.             ('About', self.on_about),
  30.             ('Prefs', self.on_preferences),
  31.             ('Refresh', self.on_refresh)])
  32.         evbox = gtk.HBox()
  33.         self.applet_icon = gtk.Image()
  34.         self.set_applet_icon(0)
  35.         self.applet_icon.show()
  36.         evbox.add(self.applet_icon)
  37.         self.applet.add(evbox)
  38.         self.applet.connect('button-press-event', self.button_clicked)
  39.         self.applet.show_all()
  40.         self.new_ilw()
  41.  
  42.     
  43.     def new_ilw(self):
  44.         self.quotes_updater = QuoteUpdater(self.set_applet_icon, self.set_applet_tooltip)
  45.         self.investwidget = InvestWidget(self.quotes_updater)
  46.         self.ilw = InvestmentsListWindow(self.applet, self.investwidget)
  47.  
  48.     
  49.     def reload_ilw(self):
  50.         self.ilw.destroy()
  51.         self.new_ilw()
  52.  
  53.     
  54.     def button_clicked(self, widget, event):
  55.         if event.type == gtk.gdk.BUTTON_PRESS and event.button == 1:
  56.             if len(invest.STOCKS) == 0:
  57.                 invest.preferences.show_preferences(self, _('<b>You have not entered any stock information yet</b>'))
  58.                 self.reload_ilw()
  59.             elif not self.quotes_updater.quotes_valid:
  60.                 alert = gtk.MessageDialog(buttons = gtk.BUTTONS_CLOSE)
  61.                 alert.set_markup(_('<b>No stock quotes are currently available</b>'))
  62.                 alert.format_secondary_text(_('The server could not be contacted. The computer is either offline or the servers are down. Try again later.'))
  63.                 alert.run()
  64.                 alert.destroy()
  65.             else:
  66.                 self.ilw.toggle_show()
  67.         
  68.  
  69.     
  70.     def on_about(self, component, verb):
  71.         invest.about.show_about()
  72.  
  73.     
  74.     def on_preferences(self, component, verb):
  75.         invest.preferences.show_preferences(self)
  76.         self.reload_ilw()
  77.  
  78.     
  79.     def on_refresh(self, component, verb):
  80.         self.quotes_updater.refresh()
  81.  
  82.     
  83.     def set_applet_icon(self, change):
  84.         if change == 1:
  85.             pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(join(invest.ART_DATA_DIR, 'invest-22_up.png'), -1, -1)
  86.         elif change == 0:
  87.             pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(join(invest.ART_DATA_DIR, 'invest-22_neutral.png'), -1, -1)
  88.         else:
  89.             pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(join(invest.ART_DATA_DIR, 'invest-22_down.png'), -1, -1)
  90.         self.applet_icon.set_from_pixbuf(pixbuf)
  91.  
  92.     
  93.     def set_applet_tooltip(self, text):
  94.         self.applet_icon.set_tooltip_text(text)
  95.  
  96.  
  97.  
  98. class InvestmentsListWindow(gtk.Window):
  99.     
  100.     def __init__(self, applet, list):
  101.         gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)
  102.         self.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DOCK)
  103.         self.stick()
  104.         self.set_resizable(False)
  105.         self.set_border_width(6)
  106.         self.applet = applet
  107.         self.alignment = self.applet.get_orient()
  108.         self.add(list)
  109.         list.show()
  110.         self.hidden = True
  111.  
  112.     
  113.     def toggle_show(self):
  114.         if self.hidden == True:
  115.             self.update_position()
  116.             self.show()
  117.             self.hidden = False
  118.         elif self.hidden == False:
  119.             self.hide()
  120.             self.hidden = True
  121.         
  122.  
  123.     
  124.     def update_position(self):
  125.         '''
  126. \t\tCalculates the position and moves the window to it.
  127. \t\t'''
  128.         self.realize()
  129.         (ax, ay) = self.applet.window.get_origin()
  130.         (ww, wh) = self.get_size()
  131.         (aw, ah) = self.applet.window.get_size()
  132.         screen = self.applet.window.get_screen()
  133.         monitor = screen.get_monitor_geometry(screen.get_monitor_at_window(self.applet.window))
  134.         if self.alignment == gnomeapplet.ORIENT_LEFT:
  135.             x = ax - ww
  136.             y = ay
  137.             if y + wh > monitor.y + monitor.height:
  138.                 y = monitor.y + monitor.height - wh
  139.             
  140.             if y < 0:
  141.                 y = 0
  142.             
  143.             if y + wh > monitor.height / 2:
  144.                 gravity = gtk.gdk.GRAVITY_SOUTH_WEST
  145.             else:
  146.                 gravity = gtk.gdk.GRAVITY_NORTH_WEST
  147.         elif self.alignment == gnomeapplet.ORIENT_RIGHT:
  148.             x = ax + aw
  149.             y = ay
  150.             if y + wh > monitor.y + monitor.height:
  151.                 y = monitor.y + monitor.height - wh
  152.             
  153.             if y < 0:
  154.                 y = 0
  155.             
  156.             if y + wh > monitor.height / 2:
  157.                 gravity = gtk.gdk.GRAVITY_SOUTH_EAST
  158.             else:
  159.                 gravity = gtk.gdk.GRAVITY_NORTH_EAST
  160.         elif self.alignment == gnomeapplet.ORIENT_DOWN:
  161.             x = ax
  162.             y = ay + ah
  163.             if x + ww > monitor.x + monitor.width:
  164.                 x = monitor.x + monitor.width - ww
  165.             
  166.             if x < 0:
  167.                 x = 0
  168.             
  169.             gravity = gtk.gdk.GRAVITY_NORTH_WEST
  170.         elif self.alignment == gnomeapplet.ORIENT_UP:
  171.             x = ax
  172.             y = ay - wh
  173.             if x + ww > monitor.x + monitor.width:
  174.                 x = monitor.x + monitor.width - ww
  175.             
  176.             if x < 0:
  177.                 x = 0
  178.             
  179.             gravity = gtk.gdk.GRAVITY_SOUTH_WEST
  180.         
  181.         self.move(x, y)
  182.         self.set_gravity(gravity)
  183.  
  184.  
  185.